{
 "cells": [
  {
   "cell_type": "markdown",
   "id": "65dcf412",
   "metadata": {},
   "source": [
    "## 3.2 conda实用命令"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "11b09c73",
   "metadata": {},
   "source": [
    "本节目标：掌握conda的常用命令\n",
    "\n",
    "conda是Anaconda发行版中的包管理器。你可以使用conda命令来安装、卸载、更新和管理Python包。\n",
    "\n",
    "下面是整理的常用conda命令：\n",
    "1. conda -V #查看conda版本，验证是否安装\n",
    "2. conda update conda #更新至最新版本\n",
    "3. conda update --all #更新所有包\n",
    "4. conda update package_name #更新指定的包\n",
    "5. conda create -n env_name package_name #创建名为env_name的新环境，并在该环境下安装名为package_name 的包，可以指定新环境的版本号，例如：conda create -n python3 python=python3.7 numpy pandas，创建了python3环境，python版本为3.7，同时还安装了numpy pandas包\n",
    "6. conda activate env_name #切换至env_name环境\n",
    "7. conda deactivate #退出环境\n",
    "8. conda info -e #显示所有已经创建的环境 或者使用 conda env list\n",
    "9. conda create --name new_env_name --clone old_env_name #复制old_env_name为new_env_name\n",
    "10. conda remove --name env_name –all #删除环境\n",
    "11. conda list #查看所有已经安装的包\n",
    "12. conda install package_name #在当前环境中安装包\n",
    "13. conda install --name env_name package_name #在指定环境中安装包\n",
    "14. conda remove -- name env_name package #删除指定环境中的包\n",
    "15. conda remove package #删除当前环境中的包\n",
    "16. conda env remove -n env_name #采用第10条的方法删除环境失败时，可采用这种方法"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "ccb7eb3d",
   "metadata": {},
   "source": [
    "### 3.2.1 Anaconda 图形化界面介绍"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "2b519d81",
   "metadata": {},
   "source": [
    "上节我们安装了Anaconda这个软件，不知道你有没有注意到，桌面上并没有生成它的图标，那么到哪里去找到它呢？\n",
    "\n",
    "它在这个地方： 可以看到有Anaconda Navigator， Anaconda Prompt， 还有后续会讲到的Jupyter Notebook。\n",
    "\n",
    "<img src=\"./images/3-2-1.png\" width=\"30%\" ></img>\n",
    "\n",
    "我们先点击Anaconda Navigator 启动 看一下图形化界面，可以看到home页面， 已经帮我们安装好了一些工具软件：有Jupyter Notebook。 点击lanuch按钮就能启动了。\n",
    "\n",
    "<img src=\"./images/3-2-2.png\" width=\"60%\" ></img>\n",
    "\n",
    "切换到Environments界面，看到base是默认的虚拟环境 右侧是已经在base环境下默认安装好的包 在此你可以做一些添加、更新、删除包的操作。下面的create按钮用来新建一个新的虚拟环境 ，Clone按钮用来克隆当前环境， Import按钮 用来导入外部的环境， Remove按钮当然就是用来删除的了。\n",
    "\n",
    "<img src=\"./images/3-2-3.png\" width=\"60%\" ></img>"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "ab5213da",
   "metadata": {},
   "source": [
    "### 3.2.2 conda的命令行操作"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "2abcca64",
   "metadata": {},
   "source": [
    "接下来，我们来讲conda的命令行操作。\n",
    "\n",
    "点击Anaconda Prompt打开命令行，可以看到前面的（base），这是默认的虚拟环境，base是它的名字\n",
    "\n",
    "<img src=\"./images/3-2-4.png\" width=\"50%\" ></img>\n",
    "\n",
    "接下来我们来学习日常开发中，会用到的一些conda命令。\n",
    "\n",
    "conda -V  #查看conda 的版本\n",
    "\n",
    "<img src=\"./images/3-2-5.png\" width=\"50%\" ></img>\n",
    "\n",
    "如果想更新conda的版本使用：conda update conda  #update关键字就是表示用来更新包，后面的conda 就是你需要更新的包的名字\n",
    "\n",
    "<img src=\"./images/3-2-6.png\" width=\"50%\" ></img>\n",
    "\n",
    "查看配置了多少虚拟环境使用：conda env list #可以看到这里除了默认环境base，我还创建了一个叫做kk的环境。注意：Base环境这里有个*号 ，代表当前是处在这个环境下\n",
    "\n",
    "<img src=\"./images/3-2-7.png\" width=\"50%\" ></img>\n",
    "\n",
    "\n",
    "这里说明一下：conda 的一个最大的优势，就是可以构建多个python虚拟环境，他们彼此隔绝互不干扰，当需要用到哪个环境时就切换到此。举个例子：你正在python3.7的环境下做开发，这时接到一个新活需要用到python2.7版本，这时你就可以使用conda新建一个python2.7的环境切换到此，来完成新任务，不会影响到原来的项目。\n"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "df214c01",
   "metadata": {},
   "source": [
    "创建环境的命令是：conda create -n GengZhi  python\n",
    "```create 关键字 代表是创建   \n",
    "-n  n是name的缩写 -n后面是自己给新环境取得名字.这里我就叫GengZhi,建议大家取和项目相关辨识度高的名字.\n",
    "名字后面的python 就代表Python的环境\n",
    "也可以指定具体的Python版本 像这样写： Python=3.7.这里我没有指定版本conda就会帮我们下载最新的python解释器.\n",
    "创建好的新虚拟环境所在的位置是在电脑Anaconda安装位置下的envs目录下 ```"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "86c6bc8f",
   "metadata": {},
   "source": [
    "我们使用命令conda activate GengZhi  切换到此环境下,可以看到命令前的括号里的GengZhi,就说明我们切换到此环境了.activate 关键字后跟的就是你要切换到的环境名.如果想退出当前环境使用conda deactivate  即可\n",
    "\n",
    "<img src=\"./images/3-2-8.png\" width=\"50%\" ></img>"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "8f44ee11",
   "metadata": {},
   "source": [
    "我们在GengZhi这个环境下使用conda list 命令,列出此环境下已安装的包,可以看到conda 除了帮我们安装了python3.10 还帮我们装了其他一些包,这就是conda的另一大优势：它可以帮我们安装不同版本的包及其依赖,你再也不用为依赖关系而烦恼.\n",
    "\n",
    "<img src=\"./images/3-2-9.png\" width=\"50%\" ></img>"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "79748b91",
   "metadata": {},
   "source": [
    "我们来使用conda安装numpy: conda install numpy   #conda就会从远程搜索numpy相关信息和依赖项目,Install关键字代表安装,后面跟 你需要安装的包的名字,可以指定具体的版本,不指定的话conda就会帮我们安装最新的版本.\n",
    "\n",
    "如果你不确定要安装的包有哪些版本,可以使用指令: conda search numpy 来查看. Search关键字代表搜索,后面跟 你需要搜索的包的名字\n",
    "\n",
    "删除包的指令：conda uninstall numpy  或者  conda remove numpy  .conda 就会帮我们将numpy包及其有依赖关系的包给删除\n",
    "\n",
    "\n",
    "假设想删除我们刚创建的GengZhi环境,这里注意：首先我们需要先退出GengZhi环境,使用 conda deactivate 命令,然后在执行：conda remove -n GengZhi --all .  conda就会帮我们把gengzhi这个环境包含里面已经安装的包都给删除.\n"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "398c5173",
   "metadata": {},
   "source": [
    "关于conda 的日常开发经常使用到的命令就介绍到这了,希望小伙伴们能多动手实践,纸上得来终觉浅 绝知此事要躬行.\n",
    "\n",
    "下一节我们来讲解Jupyter Notebook的使用。\n",
    "\n",
    "[Next: Jupyter Notebook 快速上手](./3-3%20%5BJupyter%20Notebook%5D%E5%BF%AB%E9%80%9F%E4%B8%8A%E6%89%8B.ipynb)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "0c3f4017",
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3 (ipykernel)",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.8.10"
  },
  "toc": {
   "base_numbering": 1,
   "nav_menu": {},
   "number_sections": true,
   "sideBar": true,
   "skip_h1_title": false,
   "title_cell": "Table of Contents",
   "title_sidebar": "Contents",
   "toc_cell": false,
   "toc_position": {},
   "toc_section_display": true,
   "toc_window_display": false
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
